package com.wzdigit.wms.basic.client.response.transfer;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.wzdigit.wms.basic.util.DateUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 调拨单管理列表-BS端
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}, ignoreUnknown = true)
public class TransferRawResponse implements Serializable {

	private static final long serialVersionUID = -1527112122655248398L;

	/**
	 * 调拨单表头ID
	 */
    @ApiModelProperty(value = "调拨单表头ID", required = false)
    private Integer transferHeaderId;
    
	/**
	 * 调拨单号
	 */
    @ApiModelProperty(value = "调拨单号", required = false)
    @Excel(name = "调拨单号", needMerge = true, width = 20)
    private String transferNo;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态", required = false)
    @Excel(name = "状态", needMerge = true, width = 20, replace = {
            "取消_0", "新建_1", "已审核_2", "进行中_3", "完成_4", "关闭_5", "_null"})
    private Integer status;

    /**
     * 来源单号
     */
    @ApiModelProperty(value = "来源单号", required = false)
    @Excel(name = "来源单号", needMerge = true, width = 20)
    private String sourceNo;

    /**
	 * 调拨单类型
	 */
    @ApiModelProperty(value = "调拨单类型", required = false)
    @Excel(name = "调拨单类型", needMerge = true, width = 20, replace = {
            "不同库位调拨_T07","报废调拨_T08", "_null"})
    private String transferType;
    
    /**
     * 调拨部门
     */
    @ApiModelProperty(value = "调拨部门", required = false)
    @Excel(name = "调拨部门", needMerge = true, width = 20)
    private String transferDept;


    /**
     * 调拨数量
     */
    @ApiModelProperty("调拨数量")
    @Excel(name = "调拨数量", needMerge = true, width = 20)
    private BigDecimal orderQty;

    /**
     * 完成数量
     */
    @ApiModelProperty("完成数量")
    @Excel(name = "完成数量", needMerge = true, width = 20)
    private BigDecimal cmpQty;

    /**
     * 在途数量
     */
    @ApiModelProperty("在途数量")
    @Excel(name = "在途数量", needMerge = true, width = 20)
    private BigDecimal transitQty;

    /**
     * 已拣数量
     */
    @ApiModelProperty("已拣数量")
    @Excel(name = "已拣数量", needMerge = true, width = 20)
    private BigDecimal pickQty;

    /**
     * 调拨原因
     */
    @ApiModelProperty(value = "调拨原因", required = false)
    @Excel(name = "调拨原因", needMerge = true, width = 20)
    private String reason;

    /**
     * 来源仓库ID
     */
    @ApiModelProperty(value = "来源仓库ID", required = false)
    @Excel(name = "来源仓库ID", needMerge = true, width = 20)
    private Integer fmWhsId;

    /**
     * 来源仓库编码
     */
    @ApiModelProperty(value = "来源仓库编码", required = false)
    @Excel(name = "来源仓库编码", needMerge = true, width = 20)
    private String fmWhsCode;

    /**
     * 来源仓库名称
     */
    @ApiModelProperty(value = "来源仓库名称", required = false)
    private String fmWhsName;

    /**
     * 目标仓库ID
     */
    @ApiModelProperty(value = "目标仓库ID", required = false)
    @Excel(name = "目标仓库ID", needMerge = true, width = 20)
    private Integer toWhsId;

    /**
     * 目标仓库编码
     */
    @ApiModelProperty(value = "目标仓库编码", required = false)
    @Excel(name = "目标仓库编码", needMerge = true, width = 20)
    private String toWhsCode;

    /**
     * 目标仓库名称
     */
    @ApiModelProperty(value = "目标仓库名称", required = false)
    private String toWhsName;

    /**
     * 采购组织
     */
    @ApiModelProperty(value = "采购组织", required = false)
    @Excel(name = "采购组织", needMerge = true, width = 20)
    private String purchsingOrg;

    /**
     * 公司代码
     */
    @ApiModelProperty(value = "公司代码", required = false)
    @Excel(name = "公司代码", needMerge = true, width = 20)
    private String companyCode;

    /**
     * ERP移动类型
     */
    @ApiModelProperty(value = "ERP移动类型", required = false)
    @Excel(name = "ERP移动类型", needMerge = true, width = 20)
    private String erpMoveType;

    /**
     * 调拨单打印
     * 对应的枚举：PrintFlagEnum
     */
    @ApiModelProperty(value = "调拨单打印", required = false)
    @Excel(name = "调拨单打印", needMerge = true, width = 20, replace = {
            "未打印_0", "已打印_1", "未打印_null"})
    private Integer printFlag;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", required = false)
    @Excel(name = "备注", needMerge = true, width = 20)
    private String comments;

    /**
     * 建单人
     */
    @ApiModelProperty(value = "建单人", required = false)
    @Excel(name = "建单人", needMerge = true, width = 20)
    private String transferCreateUser;

    /**
     * 建单时间
     */
    @ApiModelProperty(value = "建单时间", required = false)
    @Excel(name = "建单时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date transferCreateTime;

    /**
     * 审单人
     */
    @ApiModelProperty(value = "审单人", required = false)
    @Excel(name = "审单人", needMerge = true, width = 20)
    private String transferApprovedUser;

    /**
     * 审单时间
     */
    @ApiModelProperty(value = "审单时间", required = false)
    @Excel(name = "审单时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date transferApprovedTime;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    @Excel(name = "创建人", needMerge = true, width = 20)
    private String createUser;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @Excel(name = "创建时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date createTime;

    /**
     * 修改人
     */
    @ApiModelProperty(value = "修改人")
    @Excel(name = "修改人", needMerge = true, width = 20)
    private String modifyUser;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @Excel(name = "修改时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date modifyTime;
}